Workflow creation by image analysis

ABSTRACT

A computer implemented method for generating contextual workflows includes receiving a plurality of images, analyzing the received plurality of images to identify one or more activities corresponding to the plurality of images and one or more contextual details corresponding to the plurality of images, wherein the contextual details indicate a capture location, a capture time, a capture sequence, or a capture subject for the plurality of images, calculating a confidence weighting for the one or more identified activities for the plurality of images, creating a contextual workflow according to the calculated confidence weightings, receiving a query for a workflow corresponding to an indicated context, and identifying one or more workflows that matches the indicated context.

BACKGROUND OF THE INVENTION

The present invention relates generally to the field of image analysis,and more specifically to analyzing images to create workflows.

A workflow consists of an orchestrated and repeatable pattern ofbusiness activity enabled by the systemic organization of resources intoprocesses that transform materials, provide services, or processinformation. In a broader sense, a workflow is a sequence of activitiesto be performed to complete a task. Each activity has a definedduration, actor, guideline, and other such details. The activities mayalso have parameters that indicate locations, timeframes, and othercontextual parameters that impose limitations on the occurrence of saidactivities. Workflows can provide instructions for task completion to anindividual who is unfamiliar with either the task itself or a context inwhich the task must be completed.

SUMMARY

As disclosed herein, a computer implemented method for generatingcontextual workflows includes receiving a plurality of images, analyzingthe received plurality of images to identify one or more activitiescorresponding to each image and one or more contextual detailscorresponding to each image, wherein the contextual details indicate acapture location, a capture time, a capture sequence, or a capturesubject for each of the images, calculating a confidence weighting forthe one or more identified activities for the plurality of images,creating a contextual workflow according to the calculated confidenceweightings, receiving a query for a workflow corresponding to anindicated context, and identifying one or more workflows that matchesthe indicated context. A computer program product and a computer systemcorresponding to the method are also disclosed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional block diagram depicting one example of acontextual workflow creation system in accordance with one embodiment ofthe present invention;

FIG. 2 is a flowchart depicting a workflow creation method in accordancewith at least one embodiment of the present invention;

FIG. 3A depicts an example set of images in accordance with oneembodiment of the present invention

FIG. 3B depicts an example table indicating the contextual details towhich each cluster of images from FIG. 3A corresponds;

FIG. 4 depicts an example created workflow in accordance with oneembodiment of the present invention; and

FIG. 5 depicts a block diagram of components of a computer, inaccordance with some embodiments of the present invention.

DETAILED DESCRIPTION

When engaging in unfamiliar activities, a person may not know thecorrect sequence to take in completing said activities, if there is one.For example, a person who has traveled to an unfamiliar location may beunaware of a customary sequence of events taken with respect to aparticular activity. While in some cases prior research can provide someinformation, such research may not take into consideration existingcontextual details, such as a time of day, time of year, nearby objects,or events. Furthermore, prior research may be infeasible with limitedtime, especially if one is put into a situation unexpectedly or withoutprior planning.

For example, if visiting Boston and trying to take the subway, a personmay not know that at certain times of day at some platforms, he muststand in specific spots or else they may miss the train or must rush totry to board. The present invention analyzes images that correspond toone or more contextual details related to a device's current conditionsto provide one or more workflows indicating suggested actions based onthe activities displayed in the images. In the above example, thepresent invention analyzes images taken at the current time of day ofthe subway platform the person is standing at, and identifies thatpeople who are standing in certain locations are in said locationsbefore and after the arrival of the train. In other words, these peoplewere unable to board, perhaps because it is a particularly busy time forthis platform and they were standing too far from the doors. A workflowis therefore created indicating that the user needs to stand in acertain location to board the train (next to a pillar, away from astairwell, etc.).

The present invention will now be described in detail with reference tothe Figures. Implementation of embodiments of the invention may take avariety of forms, and exemplary implementation details are discussedsubsequently with reference to the Figures.

FIG. 1 is a functional block diagram depicting one example of acontextual workflow creation system 100 in accordance with oneembodiment of the present invention. As depicted, contextual workflowcreation system 100 includes computing systems 110 and network 130.Contextual workflow creation system 100 enables workflows to be createdand identified based on a set of one or more contextual details.

Computing systems 110 can be desktop computers, laptop computers,specialized computer servers, or any other computer systems known in theart. In some embodiments, computing systems 110 represent computersystems utilizing clustered computers and components to act as a singlepool of seamless resources. In general, computing systems 110 arerepresentative of any electronic devices, or combinations of electronicdevices, capable of executing machine-readable program instructions, asdescribed in greater detail with regard to FIG. 5.

As depicted, computing system 110B includes a context detectionapplication 116. Context detection application 116 may be configured todetect one or more current contextual conditions corresponding tocomputing system 110B. Example contextual conditions may include acurrent time, location, or weather conditions detected by computingsystem 110B, or a current event indicated by a calendar service orsocial networking platform available via computing system 110B. In someembodiments, context detection application 116 is further configured tocapture, store, and provide images to computing system 110A via network130.

As depicted, computing system 110A includes a workload creationapplication 112. Workload creation application 112 may be configured toreceive images as well as current contextual conditions corresponding tocomputing system 110B. In some embodiments, workload creationapplication 112 is configured to execute a workload creation method. Oneexample of a suitable workload creation method is described in furtherdetail with respect to FIG. 2.

Network 130 can be, for example, a local area network (LAN), a wide areanetwork (WAN) such as the Internet, or a combination of the two, andinclude wired, wireless, or fiber optic connections. In general, network130 can be any combination of connections and protocols that willsupport communications between computing system 110A and 110B inaccordance with an embodiment of the present invention. In at least oneembodiment of the present invention, network 130 transmits contextualdetails and identified workflows between computing system 110A and 110B.

FIG. 2 is a flowchart depicting a workflow creation method 200 inaccordance with at least one embodiment of the present invention. Asdepicted, workflow creation method 200 includes identifying (210) one ormore stored images, identifying (220) one or more images and one or morecontextual details corresponding to the one or more images, calculating(230) a confidence weighting for the one or more identified activities,creating (240) a context workflow according to the confidenceweightings, receiving (250) a query for a workflow corresponding to anindicated context, identifying (260) one or more workflows that matchesthe indicated context, and transmitting (270) the at least one matchedcontext workflow. Workflow creation method 200 enables the creation andidentification of appropriate workflows according to one or morecontextual details.

Identifying (210) one or more images of interest may include receivingone or more images from a user device. In some embodiments, the userdevice provides one or more stored images from its own local storage. Inother embodiments, the user device provides the one or more storedimages by providing location details for the one or more stored imagescorresponding to an image hosting platform, photo sharing service,social network platform, or other platform on which photos are stored orshared. The one or more stored images may correspond to photos or videocontent from which still images can be extracted. Identifying (210) oneor more stored images may further include receiving a set of images aswell as an indicator indicating one or more stored images of interest.The indicator may indicate specific images to be analyzed, or mayindicate image formats or other image details used to identify the oneor more stored images of interest. For example, the indicator mayindicate that only JPEG files at a particular storage location are to beanalyzed.

Detecting (220) one or more contextual details corresponding to the oneor more images may include analyzing each of the one or more images toidentify one or more contextual details corresponding to each image. Insome embodiments, each image of the one or more images of interest maybe analyzed to identify any of a time context, a location context, anobject context, or an event context. A time context corresponds to thedate and time at which the image was created.

An object context corresponds to one or more objects that are detectedwithin an image. Existing object recognition techniques may be used toidentify any objects that appear in an image. Utilized objectrecognition techniques may include, but are not limited to,appearance-based methods (such as edge matching or greyscale matching),feature based methods (such as interpretation trees or pose clustering),gradient histograms, and template matching. In at least one embodiment,an indicator provides a maximum number of objects to be analyzed oridentified in each image to minimize processing time. For example, animage can contain hundreds of objects, but an indicator may indicatethat only the ten most prominent objects are to be analyzed andconsidered to provide an object context. In such cases, the providedobject context is effectively a list of the ten most prominent objectsin each image.

A location context corresponds to a location at which the image wascreated. In some embodiments, the location context corresponds to GPSinformation available via a device taking a photo at the time the photowas taken. In other embodiments, the location context corresponds to alocation pictured in an image. For example, consider an image taken atcoordinates (X,Y) facing north that displays a barn in the image. Asecond image taken at the same coordinates (X,Y) facing south does notdisplay the barn, and therefore may not be considered to be the samelocation as the first image because of the contents of the image. Theobject recognition techniques discussed previously may also be used toprovide location contexts of this nature.

An event context is an event to which an image corresponds, and may bedetermined according to a number of factors. In at least someembodiments, an event context may be determined by analyzing the timecontext, the object context, and the location context, along with otheravailable information. For example, consider a set of images taken onApril 10^(th) between 2 PM and 6 PM. The image locations all correspondto a restaurant, and the object identification results from the imageanalysis reveal that the most prominently featured objects in the set ofimages are a birthday cake, a banner reading “Happy Birthday,” a pile ofgifts on a table, and a group of individuals. Processing calendarinformation provided by a user indicates that April 10^(th) isindividual A's birthday. Aggregating all of this information wouldprovide an event context for the set of images, indicating that theycorrespond to a birthday party for individual A. In other embodiments,an event context may be identified according to an image's sourcelocation, such as the website it is from or the title of an album thephoto is in.

Calculating (230) a confidence weighting for the one or more identifiedactivities may include determining a sequence corresponding to theimages. In at least one embodiment, calculating (230) a confidenceweighting includes using existing image analysis techniques identifyingone or more objects, activities, or locations depicted in each of theimages. A confidence weighting corresponding to the likely sequencing ofthe identified objects or activities is then calculated. In oneembodiment, the confidence weighting is based on available timestampinformation corresponding to each of the images depicting an activity orobject. Because all of the images may not suggest the same sequence ofactivities, the confidence weightings indicate how many (or whatpercentage) of the images suggest or indicate a particular sequence forthe activities.

The confidence weighting for an activity may additionally be based onhow frequently said activity appears in an image cluster. In suchembodiments, a lower selected threshold “X” (wherein X is a percentageor a ratio) may be implemented to define that any activities that appearless frequently than the selected threshold “X” are to be excluded froma created workflow. Additionally, a selected optional threshold rangemay be implemented to define that any activity for which a correspondingappearance frequency falls within the selected optional threshold rangewill be included as an optional step in a created workflow. Consider anexample where a set of images includes seven image clusters related toattending a theme park, and where a selected lower threshold is 0.5, anda selected optional threshold range is (0.5, 0.6). Six of the clustersinclude images of people standing in a ticket queue, five of theclusters include images of people entering a gate, all seven clustersinclude images of people on a ride, four of the clusters include imagesof groups of people posing, and one of the clusters includes an image ofa bird sitting on a tree branch. In such an example, the confidenceweighting may be calculated according to what percentage of the clustersinclude an image of each activity. Based on these weightings, it may bedetermined that taking a group photo is an optional step since just overhalf of the image clusters include such an image, and the image of thebird (and an identified corresponding activity such as “birdwatching”)may be disregarded when creating a workflow because its confidenceweighting is below the selected threshold.

Creating (240) a context workflow according to the confidence weightingsmay include analyzing the calculated confidence weightings for the oneor more identified activities. The context workflow may be createdaccording to the most likely sequence of activities as indicated by thecalculated confidence weightings. In one embodiment, creating theworkflows further includes saving the created workflow as a workflowfile. In such an embodiment, the workflow file may be stored in aworkflow database. The workflow file may contain the workflow itself, aswell as one or more data fields indicating contextual detailscorresponding to the created workflow. For example, the data fields mayindicate that the workflow corresponds to locations X and Y and event Z.These data fields enable simplified query execution by enabling thecontextual details of each workflow to be quickly identified in responseto a query.

Receiving (250) a query for a workflow corresponding to an indicatedcontext may include receiving a user-initiated query for a workflowcorresponding to a set of indicated contextual details. The receivedquery may include details corresponding to any number of availablecontexts. For example, the query may request workflows that include aspecific location, or may request workflows that include a specificlocation, a specific time, and a specific event context. Additionally,the received query may indicate further limitation requirements for theworkflows. For example, a query may request a workflow that begins orends at a specific location. In other words, the query may imposesequence limitations on the workflows in addition to contextuallimitations. In at least one embodiment, the received query correspondsto a device's active contextual details. In other words, the query isexecuted to identify workflows corresponding to the device's currentconditions, such as its current location and the current time.

Identifying (260) one or more workflows that matches the indicatedcontext may include searching one or more workflow files to identify oneor more workflows that match the limitations imposed by the query. Inone embodiment, identifying (260) one or more workflows that matches theindicated context includes analyzing the context data fields of one ormore workflow files to identify any files that contain a workflowcorresponding to the indicated context. For example, if a query forworkflows corresponding to location X is executed, application 112 mayanalyze each workflow file to determine whether said workflow file'scontext data fields indicate that the workflow corresponds to location Xat any point.

Transmitting (270) the at least one matched context workflow may includeproviding the identified one or more workflows to a device from whichthe query was received. In one embodiment, only workflows that match allcontexts indicated by the received query are transmitted. In otherembodiments, workflows that match all contexts are transmitted whenavailable, but workflows that match the most indicated contexts may beprovided in the absence of a workflow that meets all the requirements.

FIG. 3A depicts an example set of images 300 in accordance with oneembodiment of the present invention. As depicted, the set of images 300is divided into four image clusters 310, wherein each cluster comprisesa plurality of images (depicted by shaded squares, wherein the shadingindicates which cluster each image belongs to). The images arepositioned according to the location on which the image is focused. Theclusters are then created according to shared locations of focus in theimages. As depicted, some of the images are not included in a cluster,as these images are not directed towards one of the locationscorresponding to the four clusters.

FIG. 3B depicts an example table 320 indicating the contextual detailsto which each cluster of images 310 from FIG. 3A corresponds. Asdepicted, cluster 310A corresponds to images directed towards locationA, taken at 18:00, and the images include people removing their shoes.Cluster 310B corresponds to location B, taken at 18:15, and the imagesinclude people standing in a queue. Cluster 310C corresponds to locationC, taken at 18:30, and the images include people washing their feetunder a water tap. Cluster 310D corresponds to location D, taken at18:40, and the images include people eating a meal at a group of tables.In this example, the time indicated in the table corresponds to anaverage capture time for all of the images in the cluster. This averagecapture time is used to indicate a sequence in which the eventsindicated by the images typically occur. In another embodiment, therange of existing capture times may be used to determine sequencing asopposed to the average capture time.

FIG. 4 depicts an example created workflow 400 in accordance with oneembodiment of the present invention. Workflow 400 corresponds to the setof images depicted and discussed with respect to FIG. 3A and FIG. 3B. Asdepicted, workflow 400 includes removing (410) shoes at location Abetween 17:50 and 18:10, standing (420) in line at location B between18:05 and 18:30, washing (430) feet under a tap at location C between18:20 and 18:50, and eating (440) a meal at a group of tables atlocation D between 18:30 and 19:00. In this embodiment, the timestampguidelines are created according to the range of times in which imagescorresponding to each activity were captured.

FIG. 5 depicts a block diagram of components of computer 500 inaccordance with an illustrative embodiment of the present invention. Itshould be appreciated that FIG. 5 provides only an illustration of oneimplementation and does not imply any limitations with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environment may be made.

As depicted, the computer 500 includes communications fabric 502, whichprovides communications between computer processor(s) 504, memory 506,persistent storage 508, communications unit 512, and input/output (I/O)interface(s) 514. Communications fabric 502 can be implemented with anyarchitecture designed for passing data and/or control informationbetween processors (such as microprocessors, communications and networkprocessors, etc.), system memory, peripheral devices, and any otherhardware components within a system. For example, communications fabric502 can be implemented with one or more buses.

Memory 506 and persistent storage 508 are computer-readable storagemedia. In this embodiment, memory 506 includes random access memory(RAM) 516 and cache memory 518. In general, memory 506 can include anysuitable volatile or non-volatile computer-readable storage media.

One or more programs may be stored in persistent storage 508 for accessand/or execution by one or more of the respective computer processors504 via one or more memories of memory 506. In this embodiment,persistent storage 508 includes a magnetic hard disk drive.Alternatively, or in addition to a magnetic hard disk drive, persistentstorage 508 can include a solid state hard drive, a semiconductorstorage device, read-only memory (ROM), erasable programmable read-onlymemory (EPROM), flash memory, or any other computer-readable storagemedia that is capable of storing program instructions or digitalinformation.

The media used by persistent storage 508 may also be removable. Forexample, a removable hard drive may be used for persistent storage 508.Other examples include optical and magnetic disks, thumb drives, andsmart cards that are inserted into a drive for transfer onto anothercomputer-readable storage medium that is also part of persistent storage508.

Communications unit 512, in these examples, provides for communicationswith other data processing systems or devices. In these examples,communications unit 512 includes one or more network interface cards.Communications unit 512 may provide communications through the use ofeither or both physical and wireless communications links.

I/O interface(s) 514 allows for input and output of data with otherdevices that may be connected to computer 500. For example, I/Ointerface 514 may provide a connection to external devices 520 such as akeyboard, keypad, a touch screen, and/or some other suitable inputdevice. External devices 520 can also include portable computer-readablestorage media such as, for example, thumb drives, portable optical ormagnetic disks, and memory cards. Software and data used to practiceembodiments of the present invention can be stored on such portablecomputer-readable storage media and can be loaded onto persistentstorage 508 via I/O interface(s) 514. I/O interface(s) 514 also connectto a display 522.

Display 522 provides a mechanism to display data to a user and may be,for example, a computer monitor.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A computer implemented method for generatingcontextual workflows, the method comprising: receiving a plurality ofimages; analyzing the received plurality of images to identify one ormore activities corresponding to the plurality of images and one or morecontextual details corresponding to the plurality of images, wherein thecontextual details indicate a capture location, a capture time, acapture sequence, or a capture subject for the plurality of images;calculating a confidence weighting for the one or more identifiedactivities for the plurality of images; creating a contextual workflowaccording to the calculated confidence weightings; receiving a query fora workflow corresponding to an indicated context; and identifying one ormore workflows that matches the indicated context.
 2. The computerimplemented method of claim 1, wherein calculating a confidenceweighting for an activity comprises calculating a percentage of theplurality of images that correspond to said activity.
 3. The computerimplemented method of claim 1, wherein creating a contextual workflowaccording to the calculated confidence weightings comprises creating acontextual workflow that includes activities that have a confidenceweighting greater than a selected threshold.
 4. The computer implementedmethod of claim 1, further comprising creating an indicator for thecreated contextual workflow that indicates one or more contexts to whichthe created contextual workflow corresponds.
 5. The computer implementedmethod of claim 4, wherein identifying one or more workflows thatmatches the indicated context comprises searching for a workflow thathas an indicator that includes the indicated context.
 6. The computerimplemented method of claim 1, further comprising storing the createdcontextual workflow in a contextual workflow database.
 7. The computerimplemented method of claim 1, further comprising identifying one ormore optional activities for a workflow, wherein the one or moreoptional activities correspond to activities for which the calculatedconfidence weightings fall within a selected optional threshold range.8. A computer program product for generating contextual workflows, thecomputer program product comprising: one or more computer readablestorage media and program instructions stored on the one or morecomputer readable storage media, the program instructions comprisinginstructions to: receive a plurality of images; analyze the receivedplurality of images to identify one or more activities corresponding tothe plurality of images and one or more contextual details correspondingto the plurality of images, wherein the contextual details indicate acapture location, a capture time, a capture sequence, or a capturesubject for the plurality images; calculate a confidence weighting forthe one or more identified activities for the plurality of images;create a contextual workflow according to the calculated confidenceweightings; receive a query for a workflow corresponding to an indicatedcontext; and identify one or more workflows that matches the indicatedcontext.
 9. The computer program product of claim 8, whereininstructions to calculate a confidence weighting for an activitycomprise instructions to calculate a percentage of the plurality ofimages that correspond to said activity.
 10. The computer programproduct of claim 8, wherein instructions to create a contextual workflowaccording to the calculated confidence weightings comprise instructionsto create a contextual workflow that includes activities that have aconfidence weighting greater than a selected threshold.
 11. The computerprogram product of claim 8, further comprising instructions to create anindicator for the created contextual workflow that indicates one or morecontexts to which the created contextual workflow corresponds.
 12. Thecomputer program product of claim 11, wherein instructions to identifyone or more workflows that matches the indicated context compriseinstructions to search for a workflow that has an indicator thatincludes the indicated context.
 13. The computer program product ofclaim 8, further comprising instructions to store the created contextualworkflow in a contextual workflow database.
 14. The computer programproduct of claim 8, further comprising instructions to identify one ormore optional activities for a workflow, wherein the one or moreoptional activities correspond to activities for which the calculatedconfidence weightings fall within a selected optional threshold range.15. A computer system for generating natural language processingqueries, the computer system comprising: one or more computerprocessors; one or more computer-readable storage media; programinstructions stored on the computer-readable storage media for executionby at least one of the one or more processors, the program instructionscomprising instructions to: receive a plurality of images; analyze thereceived plurality of images to identify one or more activitiescorresponding to the plurality of images and one or more contextualdetails corresponding to the plurality of images, wherein the contextualdetails indicate a capture location, a capture time, a capture sequence,or a capture subject for the plurality of images; calculate a confidenceweighting for the one or more identified activities for the plurality ofimages; create a contextual workflow according to the calculatedconfidence weightings; receive a query for a workflow corresponding toan indicated context; and identify one or more workflows that matchesthe indicated context.
 16. The computer system of claim 15, whereininstructions to calculate a confidence weighting for an activitycomprise instructions to calculate a percentage of the plurality ofimages that correspond to said activity.
 17. The computer system ofclaim 15, wherein instructions to create a contextual workflow accordingto the calculated confidence weightings comprise instructions to createa contextual workflow that includes activities that have a confidenceweighting greater than a selected threshold.
 18. The computer system ofclaim 15, further comprising instructions to create an indicator for thecreated contextual workflow that indicates one or more contexts to whichthe created contextual workflow corresponds.
 19. The computer system ofclaim 18, wherein instructions to identify one or more workflows thatmatches the indicated context comprise instructions to search for aworkflow that has an indicator that includes the indicated context. 20.The computer system of claim 15, further comprising instructions tostore the created contextual workflow in a contextual workflow database.